export function ajax(options) { // 传入一个对象作为参数  {url, data = "", async = true, dataType = "text", success}

    var { type = "get", url, data = "", async = true, dataType = "text", success } = options;


    var xhr = new XMLHttpRequest();

    // 如果data传入的是一个纯对象  -> 将其解析为参数数据队列
    if (Object.prototype.toString.call(data) == "[object Object]") {
        var list = [];
        for (var key in data) {    // key => "user"
            var val = data[key];  // "a123123"
            var str = key + "=" + val;  // "user=a123123"
            list.push(str);
        }
        // console.log(list);

        data = list.join("&");
    }


    // ajax get传参 => 将参数数据队列拼接到请求地址之后,用?分隔

    if (type.toLowerCase() == "get") {
        xhr.open("get", data ? url + "?" + data : url, async);

        xhr.send();

    } else if (type.toLowerCase() == "post") {
        xhr.open("post", url, async);
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xhr.send(data);
    }

    xhr.onreadystatechange = function () {
        // debugger;
        // 2 3 4
        if (xhr.readyState == 4 && xhr.status == 200) {
            var result = xhr.responseText;
            // console.log("请求成功", result);

            if (dataType == "json") {
                result = JSON.parse(result);
            }
            // console.log(result);

            // 请求不同的接口 => 接口响应结果也是不一样的 -> 不能把拿到数据之后执行的内容定死  => 写活?

            if (success) {
                success(result);
            }


        }
    }
}
